using MediatR;
using System;
using Work.ErrorCode;

namespace Work.API.Applications.Write.Commands
{
    /// <summary>
    /// 更新药品命令（用于修改药品信息和库存信息）
    /// </summary>
    public class UpdateDrugCommand : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 药品ID（必填）
        /// </summary>
        public int DrugId { get; set; }

        /// <summary>
        /// 药品名称
        /// </summary>
        public string DrugName { get; set; } = string.Empty;

        /// <summary>
        /// 药品类型（中药/西药）
        /// </summary>
        public string? DrugType { get; set; }

        /// <summary>
        /// 费用名称（中药费/西药费）
        /// </summary>
        public string? CostName { get; set; }

        /// <summary>
        /// 剂型（盒/袋/g等）
        /// </summary>
        public string? DosageForm { get; set; }

        /// <summary>
        /// 规格（药丸/片剂/冲剂等）
        /// </summary>
        public string? Specification { get; set; }

        /// <summary>
        /// 进价（采购价格）
        /// </summary>
        public decimal PurchasePrice { get; set; }

        /// <summary>
        /// 售价（销售价格）
        /// </summary>
        public decimal SellingPrice { get; set; }

        /// <summary>
        /// 库存上限（最大库存量）
        /// </summary>
        public int InventoryUpperLimit { get; set; }

        /// <summary>
        /// 库存下限（最小库存量）
        /// </summary>
        public int InventoryLowerLimit { get; set; }

        /// <summary>
        /// 功效（药品的作用和适应症）
        /// </summary>
        public string? Efficacy { get; set; }

        /// <summary>
        /// 操作人（执行更新操作的人员）
        /// </summary>
        public string? Operator { get; set; }

        /// <summary>
        /// 批次号（可选，用于更新第一条入库记录）
        /// </summary>
        public string? BatchNumber { get; set; }

        /// <summary>
        /// 供应商（可选，用于更新第一条入库记录）
        /// </summary>
        public string? Supplier { get; set; }

        /// <summary>
        /// 生产日期（可选，用于更新第一条入库记录）
        /// </summary>
        public DateTime? ProductionDate { get; set; }

        /// <summary>
        /// 有效日期（可选，用于更新第一条入库记录）
        /// </summary>
        public DateTime? ExpirationDate { get; set; }
    }
}

